package Git2024_5_14;

/**
 * 面试题
 */
public class M {
    // 1.Mybatis和JDBC区别
    /**
     * 1.抽象层次
     *      JDBC较低的持久层操作
     *      Mybatis是封装
     * 2.SQL编写与管理
     * 3.对象关系映射
     * 4.性能与控制权
     *      JDBC性能优于Mybatis 更直接的数据库访问
     *      Mybatis由于额外的抽象层 牺牲了部分性能 但是有着更高级的抽象程度和便利程度
     */
    // 2.#{}与${}区别
    /**
     * #{}被解析成预编译语句 预编译后可直接执行 不需要重新编译SQL
     * ${}仅仅作为字符串替代 每次执行SQL之前需要重新编译 存在SQL注入问题
     */
    /*
     * Mybatis的预编译
     *  数据库接收到SQL语句后 都会进行语法解析 优化SQL语句 生成执行计划 浪费时间 消耗性能
     *  而预编译将SQL语句模板化 上述过程只需要执行一次 就可以进行多次SQL语句执行 只需要往占位符中传入参数即可
     *
     * 注意 传输表名时 使用${}更合适
     */
    // 3.SpringBoot中 Mybatis是如何进行对象关系映射的
    /**
     * 1.配置依赖
     * 2.配置数据源-application中配置
     * 3.集成Mybatis-配置接口 配置类路径(application)
     * 4.编写mapper和xml映射文件
     */
}
